﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Globalization;
using System.Web.Configuration;
using System.Web.Security;
using System.Configuration.Provider;
using Juntae.Util;
using ProjetoClasse.Model.Entidade;
using ProjetoClasse.Model.Dao;

namespace Juntae
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                initDdlSexo();
                initDdlDia();
                initDdlMes();
                initDdlAno();
            }
        }

        private string[] getGenero()
        {
            return new string[] { "Gênero:", "Masculino", "Feminino" };
        }

        private void initDdlSexo()
        {
            ddlSexo.DataSource = getGenero();
            ddlSexo.DataBind();
        }

        private void initDdlDia()
        {
            string[] dia = new string[32];
            dia[0] = "Dia:";
            for (int i = 0; i < 31; i++)
            {
                dia[i + 1] = Convert.ToString(i + 1);
            }
            ddlNascimentoDia.DataSource = dia;
            ddlNascimentoDia.DataBind();
        }

        private void initDdlDia(int qtdDia)
        {
            string[] dia = new string[qtdDia + 1];
            dia[0] = "Dia:";
            for (int i = 0; i < qtdDia; i++)
            {
                dia[i + 1] = Convert.ToString(i + 1);
            }
            ddlNascimentoDia.DataSource = dia;
            ddlNascimentoDia.DataBind();
        }

        private void initDdlMes()
        {
            string[] mes = new string[13];
            mes[0] = "Mes:";
            for (int i = 0; i < 12; i++)
            {
                mes[i + 1] = DateTimeFormatInfo.CurrentInfo.GetMonthName(i + 1);
            }
            ddlNascimentoMes.DataSource = mes;
            ddlNascimentoMes.DataBind();
        }

        private void initDdlAno()
        {
            int inicio = 1960;
            int fim = DateTime.Now.Year;
            List<int> anos = Enumerable.Range(inicio, (fim - inicio) + 1).ToList<int>();
            anos.Reverse();
            List<string> anosString = anos.ConvertAll(delegate(int i) { return i.ToString(); });
            anosString.Insert(0, "Ano:");
            ddlNascimentoAno.DataSource = anosString;
            ddlNascimentoAno.DataBind();
        }

        protected void btnLogar_Click(object sender, ImageClickEventArgs e)
        {
            if (Membership.ValidateUser(txtEmailLogin.Text, txtSenhaLogin.Text))
            {
                if (chkConectado.Checked)
                {
                    FormsAuthentication.SetAuthCookie(txtEmailLogin.Text, true);
                }
                else
                {
                    FormsAuthentication.SetAuthCookie(txtEmailLogin.Text, false);
                }
                if (Roles.IsUserInRole(txtEmailLogin.Text, "Administradores"))
                {
                    Response.Redirect("Admin/Default.aspx");
                }
                else if (Roles.IsUserInRole(txtEmailLogin.Text, "Usuarios"))
                {
                    Response.Redirect("Users/Default.aspx");
                }
            }
            else
            {
                if (!ClientScript.IsClientScriptBlockRegistered("FalhaLogin"))
                {
                    ClientScript.RegisterClientScriptBlock(this.GetType(), "FalhaLogin", ScriptUtil.MsgFalhaLogin());
                }
                return;
            }
        }

        protected void ddlNascimentoMes_SelectedIndexChanged(object sender, EventArgs e)
        {
            initDdlDia(DateTime.DaysInMonth(DateTime.Now.Year, ddlNascimentoMes.SelectedIndex));
            initDdlAno();
            upNascimento.Update();
        }

        protected void lnkRecoveryPass_Click(object sender, EventArgs e)
        {
            //Response.Redirect("ChangePassword.aspx");
        }

        protected void btnCadastrar_Click(object sender, ImageClickEventArgs e)
        {
            UsuarioPessoaDAO usuarioDAO = new UsuarioPessoaDAO();
            UsuarioPessoaDTO usuario = new UsuarioPessoaDTO
            {
                nome = txtNome.Text,
                sobrenome = txtSobreNome.Text,
                email = txtEmailCadastro.Text,
                senha = txtSenhaCadastro.Text,
                sexo = ddlSexo.SelectedIndex,
                nascimento = Convert.ToDateTime(ddlNascimentoDia.SelectedItem.Value + "/" + ddlNascimentoMes.SelectedValue + "/" + ddlNascimentoAno.SelectedValue)
            };
            try
            {
                usuarioDAO.InserirPessoa(usuario);
                FormsAuthentication.SetAuthCookie(usuario.email, false);
                Response.Redirect("Users/WizardCadastro.aspx");
            }
            catch (Exception ex)
            {
                if (!ClientScript.IsClientScriptBlockRegistered("falhacadastro"))
                {
                    ClientScript.RegisterClientScriptBlock(this.GetType(), "falhacadastro", ScriptUtil.MsgCustom("Falha ao cadastrar o usuario: " + ex.Message));
                }
                return;
            }
        }
    }
}